sgdk: maths3D.h File Reference

sgdk

- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

Classes | Typedefs | Functions
maths3D.h File Reference

3D math engine. More...

Go to the source code of this file.

## Classes

struct | Context3D
struct | Transformation3D

## Typedefs

typedef Vect3D_f16 | Translation3D
typedef Vect3D_f16 | Rotation3D

## Functions

void | M3D_reset ()
| Reset math 3D engine (reset matrices and transformation parameters mainly).
void | M3D_setLightEnabled (u16 enabled)
| Enable or disable light transformation calculation.
u16 | M3D_getLightEnabled ()
| Get light transformation calculation enabled flag.
void | M3D_setViewport (u16 w, u16 h)
| Set viewport dimension.
void | M3D_setCamDistance (fix16 value)
| Set camera scene distance.
void | M3D_setLightXYZ (fix16 x, fix16 y, fix16 z)
| Set light direction vector.
void | M3D_setLight (Vect3D_f16 *value)
| Set light direction vector.
void | M3D_resetTransform (Transformation3D *t)
| Reset the specified rotation object.
void | M3D_setTransform (Transformation3D *tr, Translation3D *t, Rotation3D *r)
| Set translation and rotation objects to the specified transformation object.
void | M3D_setTranslation (Transformation3D *t, fix16 x, fix16 y, fix16 z)
| Set translation parameters to the specified transformation object.
void | M3D_setRotation (Transformation3D *t, fix16 x, fix16 y, fix16 z)
| Set rotation parameters to the specified Transformation3D object. Be careful, value is not given in radiant. [-8..+8] range correspond to radian [-PI..+PI] range.
void | M3D_combineTransform (Transformation3D *left, Transformation3D *right, Transformation3D *result)
| Combine the specified right and left Transformation3D objects and store result in `result`. result cannot be the same transformation object as left or right.
void | M3D_combineTranslationLeft (Translation3D *left, Transformation3D *right, Transformation3D *result)
| Combine the specified left Translation3D and right Transformation3D and store result in `result`. right and result transformation object can be the same.
void | M3D_combineTranslationRight (Transformation3D *left, Translation3D *right, Transformation3D *result)
| Combine the specified left Transformation3D with right Translation3D and store result in `result`. left and result transformation object can be the same.
void | M3D_buildMat3D (Transformation3D *t)
| Build the transformation matrix of the specified Transformation3D object. This also rebuild cached informations as inverse transformation matrix, inverse camera view...
void | M3D_buildMat3DOnly (Transformation3D *t)
| Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.
void | M3D_buildMat3DExtras (Transformation3D *t)
| Only rebuild the cached infos as inverse matrix, inverse camera view...
void | M3D_translate (Transformation3D *t, Vect3D_f16 *vertices, u16 numv)
| Process 3D translation only to specified 3D vertices buffer.
void | M3D_rotate (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv)
| Process 3D rotation only to specified 3D vertices buffer.
void | M3D_rotateInv (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest)
| Process 3D inverse rotation only to specified 3D vertex.
void | M3D_transform (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv)
| Process 3D transform (rotation and translation) to specified 3D vertices buffer.
void | M3D_project_f16 (const Vect3D_f16 *src, Vect2D_f16 *dest, u16 numv)
| Process 2D projection to specified 3D vertices buffer (fix16 version).
void | M3D_project_s16 (const Vect3D_f16 *src, Vect2D_s16 *dest, u16 numv)
| Process 2D projection to specified 3D vertices buffer (s16 version).

## Detailed Description

3D math engine.

Author:
  Stephane Dallongeville

Date:
  08/2011

This unit provides 3D transformation methods :

- translation X, Y, Z
- rotation X, Y, Z
- one directionnal light
- 2D projection
  Can transform (including 2D projection) about ~10000 vertices / seconde.

## Function Documentation

void M3D_buildMat3D | ( | Transformation3D * | t | ) |

Build the transformation matrix of the specified Transformation3D object.
This also rebuild cached informations as inverse transformation matrix, inverse camera view...

Parameters:

  t | Transformation3D object.

void M3D_buildMat3DExtras | ( | Transformation3D * | t | ) |

Only rebuild the cached infos as inverse matrix, inverse camera view...

Parameters:

  t | Transformation object.

void M3D_buildMat3DOnly | ( | Transformation3D * | t | ) |

Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.

Parameters:

  t | Transformation object.

void M3D_combineTransform | ( | Transformation3D * | left,
|  | Transformation3D * | right,
|  | Transformation3D * | result
| ) |  |

Combine the specified right and left Transformation3D objects and store result in `result`. result cannot be the same transformation object as left or right.

Parameters:

  left | Left Transformation3D object.
  right | Right Transformation3D object.
  result | Result Transformation3D object.

void M3D_combineTranslationLeft | ( | Translation3D * | left,
|  | Transformation3D * | right,
|  | Transformation3D * | result
| ) |  |

Combine the specified left Translation3D and right Transformation3D and store result in `result`.
right and result transformation object can be the same.

Parameters:

  left | Left Transformation3D object.
  right | Right Transformation3D object.
  result | Result Transformation3D object.

void M3D_combineTranslationRight | ( | Transformation3D * | left,
|  | Translation3D * | right,
|  | Transformation3D * | result
| ) |  |

Combine the specified left Transformation3D with right Translation3D and store result in `result`.
left and result transformation object can be the same.

Parameters:

  left | Left Transformation3D object.
  right | Right Translation3D object.
  result | Result Transformation3D object.

void M3D_project_f16 | ( | const Vect3D_f16 * | src,
|  | Vect2D_f16 * | dest,
|  | u16 | numv
| ) |  |

Process 2D projection to specified 3D vertices buffer (fix16 version).

Parameters:

  src | Source 3D vertices buffer.
  dest | Destination 2D vertices buffer - fix16 format
  numv | Number of vertices to project.

void M3D_project_s16 | ( | const Vect3D_f16 * | src,
|  | Vect2D_s16 * | dest,
|  | u16 | numv
| ) |  |

Process 2D projection to specified 3D vertices buffer (s16 version).

Parameters:

  src | Source 3D vertices buffer.
  dest | Destination 2D vertices buffer - s16 format
  numv | Number of vertices to project.

void M3D_rotate | ( | Transformation3D * | t,
|  | const Vect3D_f16 * | src,
|  | Vect3D_f16 * | dest,
|  | u16 | numv
| ) |  |

Process 3D rotation only to specified 3D vertices buffer.

Parameters:

  t | Transformation object containing rotation parameter.
  src | Source 3D vertices buffer.
  dest | Destination 3D vertices buffer.
  numv | Number of vertices to rotate.

void M3D_rotateInv | ( | Transformation3D * | t,
|  | const Vect3D_f16 * | src,
|  | Vect3D_f16 * | dest
| ) |  |

Process 3D inverse rotation only to specified 3D vertex.

Parameters:

  t | Transformation object containing rotation parameter.
  src | Source 3D vertex.
  dest | Destination 3D vertex.

void M3D_setCamDistance | ( | fix16 | value | ) |

Set camera scene distance.

Parameters:

  value | Distance between the camera and the scene.

void M3D_setViewport | ( | u16 | w,
|  | u16 | h
| ) |  |

Set viewport dimension.

Parameters:

  w | Viewport width (use BMP_WIDTH if you use 3D with software bitmap engine)
  h | Viewport height (use BMP_HEIGHT if you use 3D with software bitmap engine)

void M3D_transform | ( | Transformation3D * | t,
|  | const Vect3D_f16 * | src,
|  | Vect3D_f16 * | dest,
|  | u16 | numv
| ) |  |

Process 3D transform (rotation and translation) to specified 3D vertices buffer.

Parameters:

  t | Transformation object containing rotation and translation parameters.
  src | Source 3D vertices buffer.
  dest | Destination 3D vertices buffer.
  numv | Number of vertices to transform.

void M3D_translate | ( | Transformation3D * | t,
|  | Vect3D_f16 * | vertices,
|  | u16 | numv
| ) |  |

Process 3D translation only to specified 3D vertices buffer.

Parameters:

  t | Transformation object containing translation parameter.
  vertices | 3D vertices buffer to translate.
  numv | Number of vertices to translate.

All Classes Files Functions Variables Typedefs Enumerations Defines